package com.shrct.businessprocess.product;

import com.shrct.businessprocess.product.RCCompanyServiceEntry;
import com.shrct.businessprocess.product.RCLogicProduct;
import com.shrct.businessprocess.product.impl.RCCompanyServiceImpl;
import com.shrct.businessprocess.product.proxy.RCCompanyServiceProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import java.util.Collection;
import java.util.Date;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

@EntityImplementation(implementBy = RCCompanyServiceImpl.class)
public interface RCCompanyService extends IModelObject {
  public abstract String getName();
  
  public abstract RCCompanyService setName(final String name);
  
  public abstract RCLogicProduct getLogicProduct();
  
  public abstract RCCompanyService setLogicProduct(final RCLogicProduct logicProduct);
  
  public abstract Collection<RCCompanyServiceEntry> getEntries();
  
  public abstract RCCompanyServiceEntry createAndAddtoEntries(final String projectid);
  
  public abstract RCCompanyServiceEntry createAndAddtoEntries(final String projectid, final Procedure1<RCCompanyServiceEntry> updater);
  
  public abstract RCCompanyService removeFromEntries(final RCCompanyServiceEntry rCCompanyServiceEntry);
  
  public abstract RCCompanyService removeAllEntries();
  
  public abstract RCCompanyServiceEntry registerCompanyServiceEntry(final String projectid, final Date startDate, final Date dueDate);
  
  public abstract void unregisterCompanyServiceEntry(final RCCompanyServiceEntry companyServiceEntry);
  
  public abstract RCCompanyServiceProxy toProxy();
}
